Copyright(C) 1994 Terumasa KODAKA , Takeshi KONO ■FD BIOS FD BIOSの概要 o FD BIOSは、320KB FD以外のFDにアクセスするBIOSである。 FD BIOSでは、AHの下位4ビットで動作を指定し、上位4ビットでその動作に 付随した機能の指定を行う。このため、FD BIOSでは下位4ビットの値を元に 昇順に配列してある。 用語 両用BIOS o 1MBフォーマットと640KBフォーマットの両方に対応した両用FDDを コントロールするBIOSを指す。 1.44MBフォーマットにも対応した3モードFDDをコントロールする 1.44MB対応両用BIOSは、両用BIOSの上位互換。 o 両用BIOSには、1MB I/Fモードと640KB I/Fモードがある。機種により、 サポートしているモードが異なる。 - ノーマルモード:1MB I/Fモードと640KB I/Fモード - ハイレゾモード:1MB I/Fモード専用 - PC-98LT・HA :640KB I/Fモード専用 o 処理ルーチンは、いずれの機種でも本体BIOS内にある。 用語 1MB専用BIOS o PC-9801-15(8インチ標準フロッピーディスクインターフェースボード)上に 搭載されているBIOS ROMが提供する。PC-9801M2は、PC-9801-15互換のROMを 内蔵している。 o PC-9801初代に内蔵されている1MBフロッピーディスクインターフェースも 1MB専用BIOSである。本体BIOS(セグメントFD80h)内に処理ルーチンがある。 o PC-9801VM0・VX0・VX01のように内蔵FDDがオプションの機種に、本体の1MB フロッピーディスクインターフェースコネクタ経由で1MB FDDを接続した ときは、1MBフォーマットのディスクしか扱うことができないが、FD BIOSは 両用BIOSである。 用語 640KB専用BIOS o PC-9801-08・09(ミニフロッピーディスクインターフェースボード)上に 搭載されているBIOS ROMが提供する。PC-9801F2は、PC-9801-09互換のROMを 内蔵している。 o PC-9801U・VFは640KB専用機だが、搭載しているROMはPC-9801VM2と同じ ため、両用BIOS(640KB I/Fモード固定)である。 用語 I/Fモード o 両用BIOSには、1MB I/Fモードと640KB I/Fモードの2種類のI/Fモードが ある。I/Fモードは、システム起動時にどちらか一方に固定される。 o I/Fモードは、DIP SW 3-1,3-2の状態と起動装置(メディア)で決定される。 ・1MB I/Fモードに設定されるのは、以下の場合 - DIP SW 3-1=ON, 3-2=OFF - DIP SW 3-1=OFF,3-2=OFFでフロッピー以外の装置から起動した - DIP SW 3-1=OFFで1MB/1.44MBフォーマットのディスクから起動した (DIP SW 3-2の設定は任意) ・640KB I/Fモードに設定されるのは、以下の場合 - DIP SW 3-1=ON, 3-2=ON - DIP SW 3-1=OFF,3-2=ONでフロッピー以外の装置から起動した - DIP SW 3-1=OFFで640KBフォーマットのディスクから起動した (DIP SW 3-2の設定は任意) o 1MB I/Fモードは、主に1MB専用BIOSと同じハードウェアリソース(FDCの I/Oアドレス,ハードウェア割り込み,DMAチャネル,システム共通域など)を 使用する。 640KB I/Fモードは、主に640KB専用BIOSと同じハードウェアリソースを 使用する。 o どちらのI/Fモードでも、両用BIOSであれば1MBフォーマットのディスクにも、 640KBフォーマットのディスクにもアクセスできる。 ただし、1.44MBフォーマットのディスクには、1MB I/Fモードでしか アクセスできない。 用語 アクセスモード o 両用BIOSでディスクにアクセスするとき、必ずディスクのフォーマットの 種類を指定しなければならない。 1MB/640KB/1.44MBフォーマットのディスクにアクセスするときには、 それぞれ1MBアクセスモード、640KBアクセスモード、1.44MBアクセスモードを 指定する。 o 両用BIOSは、指定されたドライブが、指定されたアクセスモードをサポート しているかどうかのチェックを行わない。上位プログラムは、そのドライブが 取り扱い可能なアクセスモードでFD BIOSを実行しなければならない。 たとえば、1MB専用の外付ドライブに対して、640KBアクセスモードや 1.44MBアクセスモードでアクセスした場合、FD BIOSは実際に指示された 処理を実行しようとする。リード・ライト系の処理では、結果として正常に 読み出し・書き込みできないためのエラーが起こることになる。 用語 DA/UA o DISK BIOSでは、アクセスする装置名を指定するために、DA/UA (Device Address/Unit Address)と呼ばれる値を用いる。 上位4bitのDAで装置の種類を指定する。下位4bitのUAで同種の装置のなかの 何台目のドライブかを指定する。たとえば、1MB専用I/Fに接続された1台目の FDDを指定する場合はDA/UA=90h、4台目を指定する場合はDA/UA=93hとする。 表 専用BIOSのDA/UA +------------+-------------+ |1MB専用I/F | 9nh | |640KB専用I/F| 7nh | +------------+-------------+ * n=装置番号(0〜3) o 両用BIOSでは、1台のドライブで複数のフォーマットを扱うことができるが、 同じドライブに対して、アクセスモード毎にDAの値が割り当てられている (表:「両用BIOSのI/Fモード・アクセスモードとDA/UAの対応」参照)。 たとえば、1MB I/Fモードのとき、1台目のFDDで1MBフォーマットのディスクに アクセスするにはDA/UA=90hを指定する。640KBフォーマットのディスクに アクセスするにはDA/UA=10h、1.44MBフォーマットのディスクにアクセス するにはDA/UA=30hを指定する。 表 両用BIOSのI/Fモード・アクセスモードとDA/UAの対応 +---------------+-------------+-------------+--------------+ |\ アクセスモード | 1MBアクセス|640KBアクセス|1.44MBアクセス| |インターフェースモード \| モード| モード| モード| +---------------+-------------+-------------+--------------+ | 1MB I/Fモード| 9nh | 1nh | 3nh | |640KB I/Fモード| Fnh | 7nh | 不可 | +---------------+-------------+-------------+--------------+ * n=装置番号(0〜3) o 参考のため、DA/UAの一覧を表「全DA/UAとデバイスの対応一覧」に示す。 表 全DA/UAとデバイスの対応一覧 -------+--------------------------------------------------------------- DA/UA |デバイス -------+--------------------------------------------------------------- 00〜03h|SASI・ESDI・IDE HD BIOS(リニアセクタアドレス指定) 10〜13h|両用BIOS - 1MB I/Fモード+640KBアクセスモード 20〜26h|SCSI HD BIOS(リニアセクタアドレス指定) 30〜33h|両用BIOS - 1MB I/Fモード+1.44MBアクセスモード 40h |RAMドライブBIOSイニシャライズ用 50〜53h|320KB FD BIOS 60〜63h|BRANCH 4670仮想ディスク 70〜73h|640KB専用BIOS,両用BIOS - 640KB I/Fモード+640KBアクセスモード 80〜83h|SASI・ESDI・IDE HD BIOS(絶対セクタアドレス指定) 90〜93h|1MB専用BIOS,両用BIOS - 1MB I/Fモード+1MBアクセスモード A0〜A6h|SCSI HD BIOS(絶対セクタアドレス指定) B0〜B3h|両用BIOS - 1MB I/Fモード+1.44MBアクセスモード(Undocumented) C0〜C7h|SCSI BIOS D0h |ROMドライブ(DISK BIOSでのアクセスは不可) D1h |PCMCIAメモリカード(DISK BIOSでのアクセスは不可) E0h |RAMDISK.SYS F0〜F3h|両用BIOS - 640KB I/Fモード+1MBアクセスモード -------+--------------------------------------------------------------- 用語 RAMドライブ o 98NOTE(PC-9801NL/Rを除く),PC-9801UR,PC-98HAに搭載されているFDD互換の RAMディスク。INT 1Bhをフックして、FD BIOSをエミュレートして いる。ソフトウェアからは、本体内蔵両用ドライブのなかの1台に見える。 処理ルーチンは、セグメントD800hの拡張ROM内にある。 o 両用BIOSとほぼ同等の動作をする。1MB I/Fモード、640KB I/Fモードを サポートしている。 o 98NOTEの1.44MB対応両用BIOS搭載機には、RAMドライブが 1.44MBフォーマットに対応している機種と、1MBフォーマットまでしか 対応していない機種がある。 PC-9821Neは1.44MB対応、PC-9801NS/R・P・NX/C・NS/Aは1.44MB非対応。 用語 1MB/640KB/1.44MBフォーマット o 1MBフォーマットとは、3.5"2HD、5"2HD、8"2Dのメディアに アンフォーマット容量1.6Mバイトのフォーマットを行ったディスクを指す。 MS-DOSで8セクタ/トラックにフォーマットしたときのフォーマット容量は 約1.2Mバイトになる。 o 640KBフォーマットとは、3.5"2DD、5"2DDのメディアに アンフォーマット容量1.0Mバイトのフォーマットを行ったディスクを指す。 MS-DOSで9セクタ/トラックにフォーマットしたときのフォーマット容量は 約720Kバイトになる。 o 1.44MBフォーマットとは、3.5"2HDのメディアにアンフォーマット容量 2.0Mバイトのフォーマットを行ったディスクを指す。 MS-DOSで18セクタ/トラックにフォーマットしたときのフォーマット容量は 約1.44Mバイトになる。 INT 1Bh - Function x0h,x8h,xBh,xFh(FD) 分類 DISK BIOS 名前 無動作 対象 両用BIOS,1MB専用BIOS,640KB専用BIOS 入力 AH=x0h,x8h,xBh,xFh AL=DA/UA ---------------------------------------+----------- アクセス条件 |DA/UA値 ---------------------------------------+----------- 両用BIOS 1MB I/Fモード |9nh,1nh,3nh 両用BIOS 640KB I/Fモード |7nh,Fnh 1MB専用BIOS |9nh 640KB専用BIOS |7nh ---------------------------------------+----------- * n=装置番号(0〜3) 出力 AH=リターンコード(bit 3〜0は不定) ---------+------------------------------------------ AH |内容 ---------+------------------------------------------ 00h(CF=0)|Normal End |正常終了 40h(CF=1)|Equipment Check |DAにサポートするBIOSが存在しない値を指定した ---------+------------------------------------------ 解説 o AH bit 3〜0に0h,8h,Bh,Fhが指定された場合、FD BIOSはリターンコードを 返す以外、なにも処理を行わない。 ただし、AH bit 4=1のときは、ヘッドのシークのみ行う。 関連 INT 1Bh - Function 10h(FD) INT 1Bh - Function 10h(FD) 分類 DISK BIOS 名前 ヘッドの移動(シーク) 対象 両用BIOS,1MB専用BIOS,640KB専用BIOS 入力 AH=x/x/x/1/x/x/x/x b AL=DA/UA ---------------------------------------+----------- アクセス条件 |DA/UA値 ---------------------------------------+----------- 両用BIOS 1MB I/Fモード |9nh,1nh,3nh 両用BIOS 640KB I/Fモード |7nh,Fnh 1MB専用BIOS |9nh 640KB専用BIOS |7nh ---------------------------------------+----------- * n=装置番号(0〜3) CL=シリンダ番号 ------------+------------------ ドライブ種別|シリンダ番号の範囲 ------------+------------------ 3.5インチ,5インチ |0〜79d 8インチ |0〜76d ------------+------------------ 出力 AH=リターンコード(bit 3〜0は不定) ---------+------------------------------------------ AH |内容 ---------+------------------------------------------ 00h(CF=0)|Normal End |正常終了 40h(CF=1)|Equipment Check |DAにサポートするBIOSが存在しない値を指定した 6xh(CF=1)|Not Ready |ディスクがセットされていないか、ドライブが接続されていない ---------+------------------------------------------ 解説 o 指定したシリンダにヘッドを移動する。 u 本来、シークのみを行うファンクションが用意されているわけではない。 FD BIOSでは、全ファンクションにおいてAH bit 4(SEEKビット)が1のとき ヘッドの移動(シーク)を行う。下位4ビットで指定されたファンクションの 処理に先立って行われる。これは、INT 1Bh - Function n4h(センス系 コマンド)やINT 1Bh - Function n3h(初期化系コマンド)でも同様。 u ドライブがサポートするシリンダ番号を超えた部分にシークしようとした 場合にも、BIOSは正常終了する。 関連 INT 1Bh - Function 01h(FD) 分類 DISK BIOS 名前 ベリファイ(VERIFY) 対象 両用BIOS,1MB専用BIOS,640KB専用BIOS 入力 AH bit 7=MT 1=マルチトラック 0=シングルトラック bit 6=MF 1=倍密度(MFM) 0=単密度(FM) bit 5=r 1=リトライなし 0=8回リトライ bit 4=SEEK 1=シーク動作する 0=現在のトラック位置にアクセス bit 3〜0=0001b AL=DA/UA ---------------------------------------+---------- アクセス条件 |DA/UA値(n=装置番号0〜3) ---------------------------------------+---------- 両用BIOS 1MB I/Fモード ,1MBアクセス |9nh 両用BIOS 1MB I/Fモード ,640KBアクセス |1nh 両用BIOS 1MB I/Fモード ,1.44MBアクセス|3nh 両用BIOS 640KB I/Fモード,640KBアクセス |7nh 両用BIOS 640KB I/Fモード,1MBアクセス |Fnh 1MB専用BIOS |9nh 640KB専用BIOS |7nh ---------------------------------------+---------- BX=転送バイト数 CH=セクタ長 00h= 128バイト/セクタ 01h= 256バイト/セクタ 02h= 512バイト/セクタ 03h=1024バイト/セクタ CL=シリンダ番号(SEEKビット=1のときのみ) ------------+------------------ ドライブ種別|シリンダ番号の範囲 ------------+------------------ 3.5インチ,5インチ |0〜79d 8インチ |0〜76d ------------+------------------ DH=ヘッド番号 ------------------------+---------------- メディア/モード種別 |ヘッド番号の範囲 ------------------------+---------------- 両面メディア/両面モード|0〜1 片面メディア/片面モード|0 ------------------------+---------------- * 片面メディアは8インチのみ、片面モードは640KBアクセスモードのみ。 DL=セクタ番号 (1〜最大値はフォーマットによる) ES:BP=転送アドレス 出力 AH=リターンコード(bit 3〜0は不定) ---------+------------------------------------------ AH |内容 ---------+------------------------------------------ 00h(CF=0)|Normal End |正常終了 2xh(CF=1)|DMA Boundary |転送領域が64KB境界を跨いでいる 3xh(CF=1)|End Of Cylinder |シリンダを跨いだ転送をしようとした 40h(CF=1)|Equipment Check |DAにサポートするBIOSが存在しない値を指定した 5xh(CF=1)|Over Run |一定時間内にデータの転送が終わらなかった 6xh(CF=1)|Not Ready |ディスクがセットされていないか、ドライブが接続されていない Axh(CF=1)|Data Error |CRCエラーが発生した Cxh(CF=1)|No Data |指定されたセクタが見つからない Exh(CF=1)|Missing Address Mark |IDアドレスマークが見つからなかった ---------+------------------------------------------ 解説 o 指定されたセクタを読み取り、リターンコードを返す。 INT 1Bh - Function 06h(FD)と異なり、DDAM(Deleted Data Address Mark) を検出しても処理を中断しない。そのセクタをスキップしてベリファイを 続ける。 u メモリへの転送は行わないが、INT 1Bh - Function 06h(FD)と同じように 入力パラメータのチェックが行われるので、以下の条件を守らなければ エラーになる。 o MT=0(シングルトラック指定)のとき、一回のリードがディスク片面の同一 トラック内で完了するようにBX(転送バイト数)を設定しなければならない。 MT=1(マルチトラック指定)のとき、一回のリードがディスク両面の同一 シリンダ内で完了するようにBX(転送バイト数)を設定しなければならない。 シリンダを跨ぐリードは行えない。 o ES:BP(転送アドレス)とBX(転送バイト数)は、指定領域が物理アドレスの 64Kバイトの境界を跨がないように設定する必要がある。たとえば、 ES:BP=7000:FF00h, BX=0400hのような領域を指定することはできない。 o BX(転送バイト数)に指定する値は、セクタ長の整数倍である必要はない。 関連 INT 1Bh - Function 02h(FD) INT 1Bh - Function 06h(FD) INT 1Bh - Function 0Ch(FD) INT 1Bh - Function 02h(FD) 分類 DISK BIOS 名前 診断のための読み出し(READ DIAGNOSTIC) 対象 両用BIOS,1MB専用BIOS 入力 AH bit 7=0 bit 6=MF 1=倍密度(MFM) 0=単密度(FM) bit 5=r 1=リトライなし 0=8回リトライ bit 4=SEEK 1=シーク動作する 0=現在のトラック位置にアクセス bit 3〜0=0010b AL=DA/UA ---------------------------------------+---------- アクセス条件 |DA/UA値(n=装置番号0〜3) ---------------------------------------+---------- 両用BIOS 1MB I/Fモード ,1MBアクセス |9nh 両用BIOS 1MB I/Fモード ,640KBアクセス |1nh 両用BIOS 1MB I/Fモード ,1.44MBアクセス|3nh 両用BIOS 640KB I/Fモード,640KBアクセス |7nh 両用BIOS 640KB I/Fモード,1MBアクセス |Fnh 1MB専用BIOS |9nh ---------------------------------------+---------- BX=転送バイト数 CH=セクタ長 00h= 128バイト/セクタ 01h= 256バイト/セクタ 02h= 512バイト/セクタ 03h=1024バイト/セクタ CL=シリンダ番号(SEEKビット=1のときのみ) ------------+------------------ ドライブ種別|シリンダ番号の範囲 ------------+------------------ 3.5インチ,5インチ |0〜79d 8インチ |0〜76d ------------+------------------ DH=ヘッド番号 ------------------------+---------------- メディア/モード種別 |ヘッド番号の範囲 ------------------------+---------------- 両面メディア/両面モード|0〜1 片面メディア/片面モード|0 ------------------------+---------------- * 片面メディアは8インチのみ、片面モードは640KBアクセスモードのみ。 ES:BP=バッファアドレス 出力 AH=リターンコード(bit 3〜0は不定) ---------+------------------------------------------ AH |内容 ---------+------------------------------------------ 00h(CF=0)|Normal End |正常終了 1xh(CF=0)|Control Mark |DDAM(Deleted Data Address Mark)を検出した 2xh(CF=1)|DMA Boundary |転送領域が64KB境界を跨いでいる 3xh(CF=1)|End Of Cylinder |シリンダを跨いだ転送をしようとした 40h(CF=1)|Equipment Check |DAにサポートするBIOSが存在しない値を指定した 5xh(CF=1)|Over Run |一定時間内にデータの転送が終わらなかった 6xh(CF=1)|Not Ready |ディスクがセットされていないか、ドライブが接続されていない Axh(CF=1)|Data Error |CRCエラーが発生した Cxh(CF=1)|No Data |1トラック分リードしても正しいIDが見つからなかった Exh(CF=1)|Missing Address Mark |IDアドレスマークが見つからなかった ---------+------------------------------------------ 解説 o 指定されたトラックのセクタ番号1からデータを読み込む。 INT 1Bh - Function 06hと異なり、インデックスマークの直後からリードを 開始する。IDエラー、データ部のCRCエラー、DDAMの検出があっても、 BX(転送バイト数)で指定されたサイズ分のリードを続ける。 u テクニカルデータブックには、DLにセクタ番号の指定ができるように記述 されているが、実際にはDLの値にかかわらず指定トラックの先頭セクタから 転送が始まる。 o MT=0(シングルトラック指定)のとき、一回の転送がディスク片面の同一 トラック内で完了するようにBX(転送バイト数)を設定しなければならない。 MT=1(マルチトラック指定)のとき、一回の転送がディスク両面の同一 シリンダ内で完了するようにBX(転送バイト数)を設定しなければならない。 シリンダを跨ぐ転送は行えない。 o ES:BP(転送アドレス)とBX(転送バイト数)は、転送領域が物理アドレスの 64Kバイトの境界を跨がないように設定する必要がある。たとえば、 ES:BP=7000:FF00h, BX=0400hのような領域に転送することはできない。 o BX(転送バイト数)に指定する値は、セクタ長の整数倍である必要は ない。指定された値と同じ長さのデータが実際に転送される。 関連 INT 1Bh - Function 01h(FD) INT 1Bh - Function 06h(FD) INT 1Bh - Function 0Ch(FD) INT 1Bh - Function 03h(FD) 分類 DISK BIOS 名前 初期化 (INITIALIZE) 対象 両用BIOS,1MB専用BIOS,640KB専用BIOS 入力 AH=03h AL=DA/UA ---------------------------------------+----------- アクセス条件 |DA/UA値(x=任意) ---------------------------------------+----------- 両用BIOS 1MB I/Fモード |9xh,1xh,3xh 両用BIOS 640KB I/Fモード |7xh,Fxh 1MB専用BIOS |9xh 640KB専用BIOS |7xh ---------------------------------------+----------- 出力 AH=リターンコード(bit 3〜0は不定) ---------+------------------------------------------ AH |内容 ---------+------------------------------------------ 00h(CF=0)|Normal End |正常終了 40h(CF=1)|Equipment Check |DAにサポートするBIOSが存在しない値を指定した ---------+------------------------------------------ 解説 o FD BIOSの初期化を行う。 システム起動時には、すでに初期化されている。 関連 0000:0564h 0000:05CAh INT 1Bh - Function 83h(FD) INT 1Bh - Function 83h(FD) 分類 DISK BIOS 名前 モータ停止モードの設定 対象 両用BIOS - 1MB I/Fモード PC-9801VM2・VM21・UV2・UV21・VX2・VX21・UX, PC-XA・XLを除く 入力 AH=83h AL=DA/UA ---------------------------------------+----------- アクセス条件 |DA/UA値(x=任意) ---------------------------------------+----------- 両用BIOS 1MB I/Fモード |9xh,1xh,3xh ---------------------------------------+----------- 出力 AH=リターンコード(bit 3〜0は不定) ---------+------------------------------------------ AH |内容 ---------+------------------------------------------ 00h(CF=0)|Normal End |正常終了 40h(CF=1)|Equipment Check |DAにサポートするBIOSが存在しない値を指定した ---------+------------------------------------------ 解説 o 一定時間ディスクアクセスがないとき、FDDのモータを自動的に停止する モードに設定する。一度このモードに設定すると、BIOSではモータ常時ON モードに戻すことはできない。 I/O 00BEh bit 2(EMTON)=0にすることで常時ONモードにできる。 u 起動時からモータ停止モードに設定されている機種、セットアップメニューで 起動時のモードを選択できる機種もある。 o このファンクションを持たない機種で実行すると、AH=03hと同様の処理を行い 正常終了する。この場合、このファンクション実行後に0000:0480h bit 4が 1にならない。 o PC-9801UXは、I/O 00BEh bit 2(EMTON)ビットが有効だが、BIOSはこの ファンクションをサポートしていない。 関連 0000:0480h bit 4 0000:0485h INT 1Fh - Function 9A07h INT 1Bh - Function 83h(FD) 分類 DISK BIOS 名前 新イニシャライズ(AI検出有効) 対象 両用BIOS - 640KB I/Fモード 入力 AH=83h AL=DA/UA ---------------------------------------+----------- アクセス条件 |DA/UA値(x=任意) ---------------------------------------+----------- 両用BIOS 640KB I/Fモード |7xh,Fxh ---------------------------------------+----------- 出力 AH=リターンコード(bit 3〜0は不定) ---------+------------------------------------------ AH |内容 ---------+------------------------------------------ 00h(CF=0)|Normal End |正常終了 40h(CF=1)|Equipment Check |DAにサポートするBIOSが存在しない値を指定した ---------+------------------------------------------ 解説 o AI(アテンションインタラプト)を検出するように初期化する。一度AI検出 するように設定すると、リセットするまでAIなしに戻すことはできない。 o DAにFhを指定すれば、このファンクションをサポートしていない 640KB専用BIOSではエラー(リターンコード4xh)が発生するため、 ファンクションのサポートの有無を確認できる。 関連 0000:0500h bit 2 INT 1Bh - Function 04h(FD) 分類 DISK BIOS 名前 センス (SENSE) 対象 両用BIOS,1MB専用BIOS,640KB専用BIOS 入力 AH=04h AL=DA/UA ---------------------------------------+---------- アクセス条件 |DA/UA値(n=装置番号0〜3) ---------------------------------------+---------- 両用BIOS 1MB I/Fモード ,1MBアクセス |9nh 両用BIOS 1MB I/Fモード ,640KBアクセス |1nh 両用BIOS 1MB I/Fモード ,1.44MBアクセス|3nh 両用BIOS 640KB I/Fモード,640KBアクセス |7nh 両用BIOS 640KB I/Fモード,1MBアクセス |Fnh 1MB専用BIOS |9nh 640KB専用BIOS |7nh ---------------------------------------+---------- 出力 AH=リターンコード -----------+------------------------------------------ AH bit 7〜4|内容 -----------+------------------------------------------ 00h(CF=0) |Ready |メディアがセットされている(書き込み可能) 1xh(CF=0) |Write Protect |メディアがセットされている(書き込み禁止) 40h(CF=1) |Equipment Check |DAにサポートするBIOSが存在しない値を指定した 6xh(CF=1) |Not Ready |ディスクがセットされていないか、ドライブが接続されていない -----------+------------------------------------------ AH bit 3=0(未使用) bit 2= ■[DA/UA=9nh,Fnh,3nh] 0(未使用) ■[DA/UA=7nh,1nh] シリンダモード取得 1: 80シリンダ(2DD,1DD) 0: 40シリンダ(2D,1D) 関連:INT 1Bh - Function 8Eh(FD) 0000:05CAh[DA/UA=7nhのとき] 0000:0493h[DA/UA=1nhのとき] bit 1=0(未使用) bit 0= ■[DA/UA=9nh,Fnh,3nh] 両面・片面メディア 1: 両面メディアがセットされている 0: 片面メディアがセットされている,メディア未挿入 * 8インチドライブのための機能。3.5インチ、5インチメディアは 両面のみ。 ■[DA/UA=7nh,1nh] 面モード取得 1: 両面(2DD,2D) 0: 片面(1DD,1D) 関連:INT 1Bh - Function 0Eh(FD) 0000:05CAh[DA/UA=7nhのとき] 0000:0493h[DA/UA=1nhのとき] 機能 o 指定されたドライブの状態を調査する。 u 実際にドライブが接続されているかどうかを、FD BIOSのセンス系コマンドで 知ることはできない。フロッピーディスクがセットされていない場合と、 ドライブが接続されていない場合とでリターンコードが同じため。 ドライブが接続されているかどうかは、システム共通域に示されている。 u モータ自動停止モードがONでモータが停止しているときにこのファンクション を実行すると、1回目の実行時にはメディアのセット状態を正しく検出する ことができない(ディスク未挿入のエラーが返る)。少しのウェイトを入れて から再度実行すると、正しい検出ができる。 関連 0000:0488h 0000:0494h 0000:055Ch INT 1Bh - Function 84h(FD) INT 1Bh - Function C4h(FD) INT 1Bh - Function 84h(FD) 分類 DISK BIOS 名前 新センス 対象 両用BIOS 入力 AH=84h AL=DA/UA ---------------------------------------+---------- アクセス条件 |DA/UA値(n=装置番号0〜3) ---------------------------------------+---------- 両用BIOS 1MB I/Fモード ,1MBアクセス |9nh 両用BIOS 1MB I/Fモード ,640KBアクセス |1nh 両用BIOS 1MB I/Fモード ,1.44MBアクセス|3nh 両用BIOS 640KB I/Fモード,640KBアクセス |7nh 両用BIOS 640KB I/Fモード,1MBアクセス |Fnh ---------------------------------------+---------- 出力 AH=リターンコード -----------+------------------------------------------ AH bit 7〜4|内容 -----------+------------------------------------------ 00h(CF=0) |Ready |メディアがセットされている(書き込み可能) 1xh(CF=0) |Write Protect |メディアがセットされている(書き込み禁止) 40h(CF=1) |Equipment Check |DAにサポートするBIOSが存在しない値を指定した 6xh(CF=1) |Not Ready |ディスクがセットされていないか、ドライブが接続されていない -----------+------------------------------------------ AH bit 3=両用ドライブ識別 1: 両用ドライブ 0: 非両用ドライブ 関連:I/O 0094h bit 3,2[1MB I/Fモードのとき] I/O 00CCh bit 3,2[640KB I/Fモードのとき] INT 1Bh - Function C4h(FD) bit 3 bit 2= ■[DA/UA=9nh,Fnh,3nh] 0(未使用) ■[DA/UA=7nh,1nh] シリンダモード取得 1: 80シリンダ(2DD,1DD) 0: 40シリンダ(2D,1D) 関連:INT 1Bh - Function 8Eh(FD) 0000:05CAh[DA/UA=7nhのとき] 0000:0493h[DA/UA=1nhのとき] bit 1= ■[DA/UA=9nh,1nh,Fnh,3nh] 0(未使用) ■[DA/UA=7nh] アテンションインタラプト(AI)の有無 1: AIなし 0: AIあり 関連:0000:0500h bit 2 bit 0= ■[DA/UA=9nh,Fnh,3nh] 両面・片面メディア識別 1: 両面メディアがセットされている 0: 片面メディアがセットされている,またはメディア未挿入 * 8インチドライブのための機能。3.5インチ、5インチドライブ では常に両面メディア。 ■[DA/UA=7nh,1nh] 面モード取得 1: 両面(2DD,2D) 0: 片面(1DD,1D) 関連:INT 1Bh - Function 0Eh(FD) 0000:05CAh[DA/UA=7nhのとき] 0000:0493h[DA/UA=1nhのとき] 解説 o 指定されたDA/UAのドライブの状態を調査する。 両用ドライブか否かのチェックができる。 o 1MB/640KB専用BIOSでは、AH=84hでINT 1Bhを実行するとINT 1Bh - Function 04h(FD)の処理が行われる。 アテンションインタラプトのチェックをする場合は、DA/UA=1nh(1MB I/F モード時)またはDA/UA=Fnh(640KB I/Fモード時)を指定すると良い。両用 BIOSではない環境で実行したときには、Equipment Checkエラー(AH=4xh)が 発生するので、実際にはこのファンクションをサポートしていないことが 簡単にわかる。 o DA/UA=3nhは、1.44MB対応両用BIOSでのみ使用可能。 u 実際にドライブが接続されているかどうかを、DISK BIOSのセンス系コマンドで 知ることはできない。フロッピーディスクがセットされていない場合と、 ドライブが接続されていない場合とでリターンコードが同じため。 ドライブが接続されているかどうかはシステム共通域を調べることで 確認できる。 u モータ自動停止モードがONでモータが停止しているときにこのファンクション を実行すると、1回目の実行時にはメディアのセット状態を正しく検出する ことができない(ディスク未挿入のエラーが返る)。少しのウェイトを入れて から再度実行すると、正しい検出ができる。 u ファイルスロットに実装したPC-FD321F(ファイルスロット用1.44MB対応3.5" FDD)は、常に両用ドライブとしての動作が可能だが、INT 1Bh - Function 84h,C4hで返される両用ドライブ識別の結果(AH bit 3)は、 本体条件によって以下のようになる。 [PC-FD321Fの両用ドライブ識別の結果] -------------------------------+---------------+------------------- 本体条件 |Function 84h |Function C4h -------------------------------+---------------+------------------- 1.44MB非対応機 |非両用(bit 3=0)|機能なし(84hと同じ) 1.44MB対応機,本体内蔵FD 2台, | | 1MB I/Fモード |非両用(bit 3=0)|両用(bit 3=1) 1.44MB対応機,本体内蔵FD 1台, | | 1MB I/Fモード |両用(bit 3=1) |両用(bit 3=1) 1.44MB対応機,本体内蔵FD 2台, | | 640KB I/Fモード |非両用(bit 3=0)|非両用(bit 3=0) 1.44MB対応機,本体内蔵FD 1台, | | 640KB I/Fモード |両用(bit 3=1) |両用(bit 3=1) -------------------------------+---------------+------------------- u ファイルスロットに実装したPC-FD511F(ファイルスロット用1MB 5"FDD)は、 常に両用ドライブとしての動作が可能だが、INT 1Bh - Function 84h(FD) とINT 1Bh - Function C4h(FD)では返される両用ドライブ識別の結果 (AH bit 3)が、本体条件によって以下のようになる。 [PC-FD511Fの両用ドライブ識別の結果] -------------------------------+---------------+------------------- 本体条件 |Function 84h |Function C4h -------------------------------+---------------+------------------- 1.44MB非対応機 *1 |非両用(bit 3=0)|機能なし(84hと同じ) 1.44MB対応機,本体内蔵FD2台 *2 |非両用(bit 3=0)|非両用(bit 3=0) 1.44MB対応機,本体内蔵FD1台 *3 |両用(bit 3=1) |両用(bit 3=1) -------------------------------+---------------+------------------- *1:PC-9801FA・FS・FX, PC-H98 model105など *2:PC-9821Ap・As・Ae・Ap2・Asのフロッピーディスクモデル *3:PC-9821Af・Ap・As・Ae・Ap2・As2のハードディスクモデル u ファイルスロットに実装したPC-9801-F04(ファイルスロット用1MB 3.5" FDD) は、どの機種に使用した場合も1Mバイト専用。 なお、PC-9801-F04の基板上のジャンパJ1をショートさせると、PC-FD511Fと 同様、両用ドライブとして使用することができるようになる。 関連 0000:0494h 0000:055Ch INT 1Bh - Function 04h(FD) INT 1Bh - Function C4h(FD) INT 1Bh - Function C4h(FD) 分類 DISK BIOS 名前 新センス2 Undocumented 対象 1.44MB対応両用BIOS(1MB I/Fモード) 入力 AH=C4h AL=DA/UA(3nhの指定を推奨) ---------------------------------------+---------- アクセス条件 |DA/UA値(n=装置番号0〜3) ---------------------------------------+---------- 両用BIOS 1MB I/Fモード ,1MBアクセス |9nh 両用BIOS 1MB I/Fモード ,640KBアクセス |1nh 両用BIOS 1MB I/Fモード ,1.44MBアクセス|3nh ---------------------------------------+---------- 出力 AH=リターンコード -----------+------------------------------------------ AH bit 7〜4|内容 -----------+------------------------------------------ 00h(CF=0) |Ready |メディアがセットされている(書き込み可能) 1xh(CF=0) |Write Protect |メディアがセットされている(書き込み禁止) 40h(CF=1) |Equipment Check |DAにサポートするBIOSが存在しない値を指定した 6xh(CF=1) |Not Ready |ディスクがセットされていないか、ドライブが接続されていない -----------+------------------------------------------ AH bit 3=両用ドライブ識別 1: 両用ドライブ 0: 非両用ドライブ 関連:I/O 0094h bit 3,2[1MB I/Fモードのとき] I/O 00CCh bit 3,2[640KB I/Fモードのとき] 0000:05AEh[1.44MB対応機] INT 1Bh - Function 84h(FD) bit 3 bit 2=1.44MB対応ドライブ識別 1: 1.44MB対応ドライブ 0: 1.44MB非対応ドライブ bit 1,0=INT 1Bh - Function 84h(FD)と同じ 解説 o 指定されたDA/UAのドライブの状態を調査する。 1.44MB対応ドライブか否かのチェックができる。 o 1.44MBアクセスできるのは、1.44MB対応機で1MB I/Fモードに設定した 場合の3.5インチFDDのみ。1.44MB対応機でも、640KB I/Fモードに設定すると 1.44MBアクセスできない。また、5インチドライブでは1.44MBフォーマットは 取り扱えない。 u 実際にドライブが接続されているかどうかを、DISK BIOSのセンス系コマンドで 知ることはできない。フロッピーディスクがセットされていない場合と、 ドライブが接続されていない場合とでリターンコードが同じため。 ドライブが接続されているかどうかはシステム共通域を調べることで 確認できる。 u モータ自動停止モードがONでモータが停止しているときにこのファンクション を実行すると、1回目の実行時にはメディアのセット状態を正しく検出する ことができない(ディスク未挿入のエラーが返る)。少しのウェイトを入れて から再度実行すると、正しい検出ができる。 u 1.44MB対応のチェックをする場合、DA/UA=3nhを指定すると良い。 1.44MB非対応機で本ファンクションを実行するとファンクション84hと同等の 処理が行われる。このため、bit 2から1.44MBをサポートしているか否かの 情報を得ることができない。1.44MB対応機を640KB I/Fモードに設定した場合 も同様。 DA/UA=3nhを指定すれば、1.44MBをサポートしない環境ではEquipment Checkエラー(AH=4xh)が発生し、1.44MBアクセスが不可能なことが 簡単にわかる。 u 1.44MB対応機に接続されている1.44MB非対応のドライブ(内蔵または外付 5インチFDD、外付3.5インチFDD、ファイルスロットに内蔵したPC-9801-F04、 PC-FD511Fなど)に対して、DA/UA=3xhでDISK BIOSコマンドを実行した場合、 必ずしも異常終了するとは限らない。指定されたドライブにメディアが セットされていれば正常終了する。 1.44MBアクセス可能かどうかを調べるには、必ずリターンコードの bit 2を見て判断しなければならない。 u bit 3の結果は、INT 1Bh - Function 84h(FD)とは本体条件により結果が 異なる。 INT 1Bh - Function 84h(FD)を参照。 関連 0000:0494h 0000:055Ch 0000:05AEh INT 1Bh - Function 04h(FD) INT 1Bh - Function 84h(FD) INT 1Bh - Function C4h(FD) INT 1Bh - Function 05h(FD) 分類 DISK BIOS 名前 データの書き込み (WRITE DATA) 対象 両用BIOS,1MB専用BIOS,640KB専用BIOS 入力 AH bit 7=MT 1=マルチトラック■[PC-H98] 0=シングルトラック * PC-H98以外ではマルチトラック指定できない bit 6=MF 1=倍密度(MFM) 0=単密度(FM) bit 5=r 1=リトライなし 0=8回リトライ bit 4=SEEK 1=シーク動作する 0=現在のトラック位置にアクセス bit 3〜0=0101b AL=DA/UA ---------------------------------------+---------- アクセス条件 |DA/UA値(n=装置番号0〜3) ---------------------------------------+---------- 両用BIOS 1MB I/Fモード ,1MBアクセス |9nh 両用BIOS 1MB I/Fモード ,640KBアクセス |1nh 両用BIOS 1MB I/Fモード ,1.44MBアクセス|3nh 両用BIOS 640KB I/Fモード,640KBアクセス |7nh 両用BIOS 640KB I/Fモード,1MBアクセス |Fnh 1MB専用BIOS |9nh 640KB専用BIOS |7nh ---------------------------------------+---------- BX=転送バイト数 CH=セクタ長 00h= 128バイト/セクタ 01h= 256バイト/セクタ 02h= 512バイト/セクタ 03h=1024バイト/セクタ CL=シリンダ番号(SEEKビット=1のときのみ) ------------+------------------ ドライブ種別|シリンダ番号の範囲 ------------+------------------ 3.5インチ,5インチ |0〜79d 8インチ |0〜76d ------------+------------------ DH=ヘッド番号 ------------------------+---------------- メディア/モード種別 |ヘッド番号の範囲 ------------------------+---------------- 両面メディア/両面モード|0〜1 片面メディア/片面モード|0 ------------------------+---------------- * 片面メディアは8インチのみ、片面モードは640KBアクセスモードのみ。 DL=セクタ番号 (1〜最大値はフォーマットによる) ES:BP=バッファアドレス 出力 AH=リターンコード(bit 3〜0は不定) ---------+------------------------------------------ AH |内容 ---------+------------------------------------------ 00h(CF=0)|Normal End |正常終了 2xh(CF=1)|DMA Boundary |転送領域が64KB境界を跨いでいる 3xh(CF=1)|End Of Cylinder |シリンダを跨いだ転送をしようとした 40h(CF=1)|Equipment Check |DAにサポートするBIOSが存在しない値を指定した 5xh(CF=1)|Over Run |一定時間内にデータの転送が終わらなかった 6xh(CF=1)|Not Ready |ディスクがセットされていないか、ドライブが接続されていない 7xh(CF=1)|Not Writable |ライトプロテクトされている Axh(CF=1)|Data Error |CRCエラーが発生した |ID読み取り時にCRCエラーが発生した Cxh(CF=1)|No Data |指定されたセクタが見つからない Exh(CF=1)|Missing Address Mark |IDアドレスマークが見つからなかった ---------+------------------------------------------ 解説 o 指定されたセクタにデータを書き込む。セクタのデータフィールドには、 DAM(Data Address Mark)を書き込む。 通常の書き込みには、このファンクションを用いる。 o MT=0(シングルトラック指定)のとき、一回の転送がディスク片面の同一 トラック内で完了するようにBX(転送バイト数)を設定しなければならない。 MT=1(マルチトラック指定)のとき、一回の転送がディスク両面の同一 シリンダ内で完了するようにBX(転送バイト数)を設定しなければならない。 シリンダを跨ぐ転送は行えない。 o ES:BP(転送アドレス)とBX(転送バイト数)は、転送領域が物理アドレスの 64Kバイトの境界を跨がないように設定する必要がある。たとえば、 ES:BP=7000:FF00h, BX=0400hのような領域に転送することはできない。 o BX(転送バイト数)に指定する値がセクタ長の整数倍でなかったとき、 最終セクタの転送データがない部分には、00hが書き込まれる。 関連 INT 1Bh - Function 09h(FD) INT 1Bh - Function 06h(FD) 分類 DISK BIOS 名前 データの読み出し (READ DATA) 対象 両用BIOS,1MB専用BIOS,640KB専用BIOS 入力 AH bit 7=MT 1=マルチトラック 0=シングルトラック bit 6=MF 1=倍密度(MFM) 0=単密度(FM) bit 5=r 1=リトライなし 0=8回リトライ bit 4=SEEK 1=シーク動作する 0=現在のトラック位置にアクセス bit 3〜0=0110b AL=DA/UA ---------------------------------------+----------------------- アクセス条件 |DA/UA値(n=装置番号0〜3) ---------------------------------------+----------------------- 両用BIOS 1MB I/Fモード ,1MBアクセス |9nh 両用BIOS 1MB I/Fモード ,640KBアクセス |1nh 両用BIOS 1MB I/Fモード ,1.44MBアクセス|3nh 両用BIOS 640KB I/Fモード,640KBアクセス |7nh 両用BIOS 640KB I/Fモード,1MBアクセス |Fnh 1MB専用BIOS |9nh 640KB専用BIOS |7nh ---------------------------------------+----------------------- BX=転送バイト数 CH=セクタ長 00h= 128バイト/セクタ 01h= 256バイト/セクタ 02h= 512バイト/セクタ 03h=1024バイト/セクタ CL=シリンダ番号(SEEKビット=1のときのみ) ------------+------------------ ドライブ種別|シリンダ番号の範囲 ------------+------------------ 3.5インチ,5インチ |0〜79d 8インチ |0〜76d ------------+------------------ DH=ヘッド番号 ------------------------+---------------- メディア/モード種別 |ヘッド番号の範囲 ------------------------+---------------- 両面メディア/両面モード|0〜1 片面メディア/片面モード|0 ------------------------+---------------- * 片面メディアは8インチのみ、片面モードは640KBアクセスモードのみ。 DL=セクタ番号 (1〜最大値はフォーマットによる) ES:BP=バッファアドレス 出力 AH=リターンコード(bit 3〜0は不定) ---------+------------------------------------------ AH |内容 ---------+------------------------------------------ 00h(CF=0)|Normal End |正常終了 1xh(CF=0)|Control Mark |DDAM(Deleted Data Address Mark)を検出した 2xh(CF=1)|DMA Boundary |転送領域が64KB境界を跨いでいる 3xh(CF=1)|End Of Cylinder |シリンダを跨いだ転送をしようとした 40h(CF=1)|Equipment Check |DAにサポートするBIOSが存在しない値を指定した 5xh(CF=1)|Over Run |一定時間内にデータの転送が終わらなかった 6xh(CF=1)|Not Ready |ディスクがセットされていないか、ドライブが接続されていない Axh(CF=1)|Data Error |CRCエラーが発生した Cxh(CF=1)|No Data |指定されたセクタが見つからない Exh(CF=1)|Missing Address Mark |IDアドレスマークが見つからなかった ---------+------------------------------------------ 解説 o 指定されたセクタからデータを読み込む。 DDAM(Deleted Data Address Mark)を検出すると、AH=01hのリターンコードを 返して処理を中断する。 通常の読み出しには、このファンクションを用いる。 o MT=0(シングルトラック指定)のとき、一回の転送がディスク片面の同一 トラック内で完了するようにBX(転送バイト数)を設定しなければならない。 MT=1(マルチトラック指定)のとき、一回の転送がディスク両面の同一 シリンダ内で完了するようにBX(転送バイト数)を設定しなければならない。 シリンダを跨ぐ転送は行えない。 o ES:BP(転送アドレス)とBX(転送バイト数)は、転送領域が物理アドレスの 64Kバイトの境界を跨がないように設定する必要がある。たとえば、 ES:BP=7000:FF00h, BX=0400hのような領域に転送することはできない。 o BX(転送バイト数)に指定する値は、セクタ長の整数倍である必要は ない。指定された値と同じ長さのデータが実際に転送される。 関連 INT 1Bh - Function 01h(FD) INT 1Bh - Function 02h(FD) INT 1Bh - Function 0Ch(FD) INT 1Bh - Function 07h(FD) 分類 DISK BIOS 名前 シリンダ0へシークする (RECALIBRATE) 対象 両用BIOS,1MB専用BIOS,640KB専用BIOS 入力 AH=07h AL=DA/UA ---------------------------------------+----------- アクセス条件 |DA/UA値(n=装置番号0〜3) ---------------------------------------+----------- 両用BIOS 1MB I/Fモード |9nh,1nh,3nh 両用BIOS 640KB I/Fモード |7nh,Fnh 1MB専用BIOS |9nh 640KB専用BIOS |7nh ---------------------------------------+----------- 出力 AH=リターンコード(bit 3〜0は不定) ---------+------------------------------------------ AH |内容 ---------+------------------------------------------ 00h(CF=0)|Normal End |正常終了 40h(CF=1)|Equipment Check |DAにサポートするBIOSが存在しない値を指定した 6xh(CF=1)|Not Ready |ディスクがセットされていないか、ドライブが接続されていない ---------+------------------------------------------ 解説 o ヘッドをシリンダ0にシークする。 o ディスクアクセス時にエラーが起こったときなどに、いったんヘッドを シリンダ0にシークしてから再アクセスすると、正常にアクセスできるように なる場合がある。 関連 INT 1Bh - Function 09h(FD) 分類 DISK BIOS 名前 デリーテッドデータの書き込み (WRITE DELETED DATA) 対象 両用BIOS,1MB専用BIOS 入力 AH bit 7=MT 1=マルチトラック■[PC-H98] 0=シングルトラック * PC-H98以外ではマルチトラック指定できない bit 6=MF 1=倍密度(MFM) 0=単密度(FM) bit 5=r 1=リトライなし 0=8回リトライ bit 4=SEEK 1=シーク動作する 0=現在のトラック位置にアクセス bit 3〜0=1001b AL=DA/UA ---------------------------------------+---------- アクセス条件 |DA/UA値(n=装置番号0〜3) ---------------------------------------+---------- 両用BIOS 1MB I/Fモード ,1MBアクセス |9nh 両用BIOS 1MB I/Fモード ,640KBアクセス |1nh 両用BIOS 1MB I/Fモード ,1.44MBアクセス|3nh 両用BIOS 640KB I/Fモード,640KBアクセス |7nh 両用BIOS 640KB I/Fモード,1MBアクセス |Fnh 1MB専用BIOS |9nh ---------------------------------------+---------- BX=転送バイト数 CH=セクタ長 00h= 128バイト/セクタ 01h= 256バイト/セクタ 02h= 512バイト/セクタ 03h=1024バイト/セクタ CL=シリンダ番号(SEEKビット=1のときのみ) ------------+------------------ ドライブ種別|シリンダ番号の範囲 ------------+------------------ 3.5インチ,5インチ |0〜79d 8インチ |0〜76d ------------+------------------ DH=ヘッド番号 ------------------------+---------------- メディア/モード種別 |ヘッド番号の範囲 ------------------------+---------------- 両面メディア/両面モード|0〜1 片面メディア/片面モード|0 ------------------------+---------------- * 片面メディアは8インチのみ、片面モードは640KBアクセスモードのみ。 DL=セクタ番号 (1〜最大値はフォーマットによる) ES:BP=バッファアドレス 出力 AH=リターンコード(bit 3〜0は不定) ---------+------------------------------------------ AH |内容 ---------+------------------------------------------ 00h(CF=0)|Normal End |正常終了 2xh(CF=1)|DMA Boundary |転送領域が64KB境界を跨いでいる 3xh(CF=1)|End Of Cylinder |シリンダを跨いだ転送をしようとした 40h(CF=1)|Equipment Check |DAにサポートするBIOSが存在しない値を指定した 5xh(CF=1)|Over Run |一定時間内にデータの転送が終わらなかった 6xh(CF=1)|Not Ready |ディスクがセットされていないか、ドライブが接続されていない 7xh(CF=1)|Not Writable |ライトプロテクトされている Axh(CF=1)|Data Error |ID読み取り時にCRCエラーが発生した Cxh(CF=1)|No Data |指定されたセクタが見つからない Exh(CF=1)|Missing Address Mark |IDアドレスマークが見つからなかった ---------+------------------------------------------ 解説 o 指定されたセクタにデータを書き込む。セクタのデータフィールド には、DDAM(Deleted Data Address Mark)を書き込む。 o MT=0(シングルトラック指定)のとき、一回の転送がディスク片面の同一 トラック内で完了するようにBX(転送バイト数)を設定しなければならない。 MT=1(マルチトラック指定)のとき、一回の転送がディスク両面の同一 シリンダ内で完了するようにBX(転送バイト数)を設定しなければならない。 シリンダを跨ぐ転送は行えない。 o ES:BP(転送アドレス)とBX(転送バイト数)は、転送領域が物理アドレスの 64Kバイトの境界を跨がないように設定する必要がある。たとえば、 ES:BP=7000:FF00h, BX=0400hのような領域に転送することはできない。 o BX(転送バイト数)に指定する値がセクタ長の整数倍でなかったとき、 最終セクタの転送データがない部分には、00hが書き込まれる。 関連 INT 1Bh - Function 05h(FD) INT 1Bh - Function 0Ch(FD) INT 1Bh - Function 0Ah(FD) 分類 DISK BIOS 名前 IDの読み出し (READ ID) 対象 両用BIOS,1MB専用BIOS,640KB専用BIOS 入力 AH bit 7=0 bit 6=MF 1=倍密度(MFM) 0=単密度(FM) bit 5=r 1=リトライなし 0=8回リトライ bit 4=SEEK 1=シーク動作する 0=現在のトラック位置にアクセス bit 3〜0=1010b AL=DA/UA ---------------------------------------+---------- アクセス条件 |DA/UA値(n=装置番号0〜3) ---------------------------------------+---------- 両用BIOS 1MB I/Fモード ,1MBアクセス |9nh 両用BIOS 1MB I/Fモード ,640KBアクセス |1nh 両用BIOS 1MB I/Fモード ,1.44MBアクセス|3nh 両用BIOS 640KB I/Fモード,640KBアクセス |7nh 両用BIOS 640KB I/Fモード,1MBアクセス |Fnh 1MB専用BIOS |9nh 640KB専用BIOS |7nh ---------------------------------------+---------- CL=シリンダ番号(SEEKビット=1のときのみ) ------------+------------------ ドライブ種別|シリンダ番号の範囲 ------------+------------------ 3.5インチ,5インチ |0〜79d 8インチ |0〜76d ------------+------------------ DH=ヘッド番号 ------------------------+---------------- メディア/モード種別 |ヘッド番号の範囲 ------------------------+---------------- 両面メディア/両面モード|0〜1 片面メディア/片面モード|0 ------------------------+---------------- * 片面メディアは8インチのみ、片面モードは640KBアクセスモードのみ。 出力 AH=リターンコード(bit 3〜0は不定) ---------+------------------------------------------ AH |内容 ---------+------------------------------------------ 00h(CF=0)|Normal End |正常終了 40h(CF=1)|Equipment Check |DAにサポートするBIOSが存在しない値を指定した 6xh(CF=1)|Not Ready |ディスクがセットされていないか、ドライブが接続されていない Cxh(CF=1)|No Data |1トラック分リードしても正しいIDが見つからなかった Exh(CF=1)|Missing Address Mark |IDアドレスマークが見つからなかった ---------+------------------------------------------ CH=セクタ長 00h= 128バイト/セクタ 01h= 256バイト/セクタ 02h= 512バイト/セクタ 03h=1024バイト/セクタ CL=シリンダ番号 DH=ヘッド番号 DL=セクタ番号 解説 o トラック内で最初に見つかった正常なIDを読み取り、セクタ長、 シリンダ番号、ヘッド番号、セクタ番号の値を返す。 関連 INT 1Bh - Function 0Ch(FD) 分類 DISK BIOS 名前 デリーテッドデータの読み出し (READ DELETED DATA) 対象 両用BIOS,1MB専用BIOS 入力 AH bit 7=MT 1=マルチトラック 0=シングルトラック bit 6=MF 1=倍密度(MFM) 0=単密度(FM) bit 5=r 1=リトライなし 0=8回リトライ bit 4=SEEK 1=シーク動作する 0=現在のトラック位置にアクセス bit 3〜0=1100b AL=DA/UA ---------------------------------------+---------- アクセス条件 |DA/UA値(n=装置番号0〜3) ---------------------------------------+---------- 両用BIOS 1MB I/Fモード ,1MBアクセス |9nh 両用BIOS 1MB I/Fモード ,640KBアクセス |1nh 両用BIOS 1MB I/Fモード ,1.44MBアクセス|3nh 両用BIOS 640KB I/Fモード,640KBアクセス |7nh 両用BIOS 640KB I/Fモード,1MBアクセス |Fnh 1MB専用BIOS |9nh ---------------------------------------+---------- BX=転送バイト数 CH=セクタ長 00h= 128バイト/セクタ 01h= 256バイト/セクタ 02h= 512バイト/セクタ 03h=1024バイト/セクタ CL=シリンダ番号(SEEKビット=1のときのみ) ------------+------------------ ドライブ種別|シリンダ番号の範囲 ------------+------------------ 3.5インチ,5インチ |0〜79d 8インチ |0〜76d ------------+------------------ DH=ヘッド番号 ------------------------+---------------- メディア/モード種別 |ヘッド番号の範囲 ------------------------+---------------- 両面メディア/両面モード|0〜1 片面メディア/片面モード|0 ------------------------+---------------- * 片面メディアは8インチのみ、片面モードは640KBアクセスモードのみ。 DL=セクタ番号 (1〜最大値はフォーマットによる) ES:BP=バッファアドレス 出力 AH=リターンコード(bit 3〜0は不定) ---------+------------------------------------------ AH |内容 ---------+------------------------------------------ 1xh(CF=0)|Control Mark |DDAM(Deleted Data Address Mark)を検出した 2xh(CF=1)|DMA Boundary |転送領域が64KB境界を跨いでいる 3xh(CF=1)|End Of Cylinder |シリンダを跨いだ転送をしようとした 40h(CF=1)|Equipment Check |DAにサポートするBIOSが存在しない値を指定した 5xh(CF=1)|Over Run |一定時間内にデータの転送が終わらなかった 6xh(CF=1)|Not Ready |ディスクがセットされていないか、ドライブが接続されていない Axh(CF=1)|Data Error |CRCエラーが発生した Cxh(CF=1)|No Data |指定されたセクタが見つからない Exh(CF=1)|Missing Address Mark |IDアドレスマークが見つからなかった ---------+------------------------------------------ 解説 o DDAM(Deleted Data Address Mark)の書き込まれたセクタから読み出しを行う。 o MT=0(シングルトラック指定)のとき、一回の転送がディスク片面の同一 トラック内で完了するようにBX(転送バイト数)を設定しなければならない。 MT=1(マルチトラック指定)のとき、一回の転送がディスク両面の同一 シリンダ内で完了するようにBX(転送バイト数)を設定しなければならない。 シリンダを跨ぐ転送は行えない。 o ES:BP(転送アドレス)とBX(転送バイト数)は、転送領域が物理アドレスの 64Kバイトの境界を跨がないように設定する必要がある。たとえば、 ES:BP=7000:FF00h, BX=0400hのような領域に転送することはできない。 o BX(転送バイト数)に指定する値は、セクタ長の整数倍である必要は ない。指定された値と同じ長さのデータが実際に転送される。 関連 INT 1Bh - Function 06h(FD) INT 1Bh - Function 09h(FD) INT 1Bh - Function 0Dh(FD) 分類 DISK BIOS 名前 トラックのフォーマット (FORMAT TRACK) 対象 両用BIOS,1MB専用BIOS,640KB専用BIOS 入力 AH bit 7=0 bit 6=MF 1=倍密度(MFM) 0=単密度(FM) bit 5=r 1=リトライなし 0=8回リトライ bit 4=SEEK 1=シーク動作する 0=現在のトラック位置にアクセス bit 3〜0=1101b AL=DA/UA ---------------------------------------+---------- アクセス条件 |DA/UA値(n=装置番号0〜3) ---------------------------------------+---------- 両用BIOS 1MB I/Fモード ,1MBアクセス |9nh 両用BIOS 1MB I/Fモード ,640KBアクセス |1nh 両用BIOS 1MB I/Fモード ,1.44MBアクセス|3nh 両用BIOS 640KB I/Fモード,640KBアクセス |7nh 両用BIOS 640KB I/Fモード,1MBアクセス |Fnh 1MB専用BIOS |9nh 640KB専用BIOS |7nh ---------------------------------------+---------- BX=フォーマット用データのバイト数 CH=セクタ長 00h= 128バイト/セクタ 01h= 256バイト/セクタ 02h= 512バイト/セクタ 03h=1024バイト/セクタ CL=シリンダ番号(SEEKビット=1のときのみ) ------------+------------------ ドライブ種別|シリンダ番号の範囲 ------------+------------------ 3.5インチ,5インチ |0〜79d 8インチ |0〜76d ------------+------------------ DH=ヘッド番号 ------------------------+---------------- メディア/モード種別 |ヘッド番号の範囲 ------------------------+---------------- 両面メディア/両面モード|0〜1 片面メディア/片面モード|0 ------------------------+---------------- * 片面メディアは8インチのみ、片面モードは640KBアクセスモードのみ。 DL=データ部への書き込みデータパターン ES:BP=フォーマット用データバッファ領域の先頭アドレス 出力 AH=リターンコード(bit 3〜0は不定) ---------+------------------------------------------ AH |内容 ---------+------------------------------------------ 00h(CF=0)|Normal End |正常終了 2xh(CF=1)|DMA Boundary |転送領域が64KB境界を跨いでいる 40h(CF=1)|Equipment Check |DAにサポートするBIOSが存在しない値を指定した 5xh(CF=1)|Over Run |一定時間内にデータの転送が終わらなかった 6xh(CF=1)|Not Ready |ディスクがセットされていないか、ドライブが接続されていない 7xh(CF=1)|Not Writable |ライトプロテクトされている ---------+------------------------------------------ 解説 o 指定されたトラックをフォーマットする。 o フォーマット用データバッファの設定方法は、テクニカルデータブック参照。 o ES:BP(フォーマット用データバッファ領域の先頭アドレス)と BX(フォーマット用データのバイト数)は、領域が物理アドレスの 64Kバイトの境界を跨がないように設定する必要がある。たとえば、 ES:BP=7000:FFF0h, BX=0020hのような領域に設定することはできない。 関連 INT 1Bh - Function 0Eh(FD) 分類 DISK BIOS 名前 SET OPERATION MODE(1) 対象 両用BIOS,640KB専用BIOS 入力 AH=0Eh AL bit 7〜4=DA ---------------------------------------+---------- アクセス条件 DA値 ---------------------------------------+---------- 両用BIOS 1MB I/Fモード ,640KBアクセス |1h 両用BIOS 640KB I/Fモード,640KBアクセス |7h 640KB専用BIOS |7h ---------------------------------------+---------- bit 3:UNIT#3 bit 2:UNIT#2 bit 1:UNIT#1 bit 0:UNIT#0 1=両面モード(2DD,2D) 0=片面モード(1DD,1D) 出力 AH=リターンコード(bit 3〜0は不定) ---------+------------------------------------------ AH |内容 ---------+------------------------------------------ 00h(CF=0)|Normal End |正常終了 40h(CF=1)|Equipment Check |DAにサポートするBIOSが存在しない値を指定した ---------+------------------------------------------ 解説 o 640KBアクセスモードでの動作モード(両面/片面)を指定する。 起動時には、全ドライブが両面,80シリンダモード(2DD)に設定されている。 動作モードを変更することで、640KBアクセスモードで1DD,1D フォーマットの媒体にアクセス(リード/ライト/フォーマット)できる。 u テクニカルデータブックでは、両用BIOS - 1MB I/Fモード時のみ有効となって いるが、640KB専用BIOS,両用BIOS - 640KB I/Fモード時にも有効。 o DAにFhを指定したときも640KBアクセスモード時の動作モードが変更 できるが、意味上、DAには7hを指定する方が良い。 関連 0000:05CAh[640KB専用BIOS,両用BIOS - 640KB I/Fモード時] 0000:0493h[両用BIOS - 1MB I/Fモード時] INT 1Bh - Function 8Eh(FD) INT 1Bh - Function 8Eh(FD) 分類 DISK BIOS 名前 SET OPERATION MODE(2) 対象 両用BIOS,640KB専用BIOS 入力 AH=8Eh AL bit 7〜4=DA ---------------------------------------+---------- アクセス条件 DA値 ---------------------------------------+---------- 両用BIOS 1MB I/Fモード ,640KBアクセス |1h 両用BIOS 640KB I/Fモード,640KBアクセス |7h 640KB専用BIOS |7h ---------------------------------------+---------- bit 3:UNIT#3 bit 2:UNIT#2 bit 1:UNIT#1 bit 0:UNIT#0 1=80シリンダモード(倍トラック …2DD/1DD) 0=40シリンダモード(非倍トラック…2D/1D) 出力 AH=リターンコード(bit 3〜0は不定) ---------+------------------------------------------ AH |内容 ---------+------------------------------------------ 00h(CF=0)|Normal End |正常終了 40h(CF=1)|Equipment Check |DAにサポートするBIOSが存在しない値を指定した ---------+------------------------------------------ 解説 o 640KBアクセスモード時の動作モード(80シリンダ/40シリンダ)を指定する。 起動時には、全ドライブが両面,80シリンダモード(2DD)に設定されている。 動作モードを変更することで、640KBアクセスモードで2D,1D フォーマットの媒体にアクセス(リード/ライト/フォーマット)できる。 u テクニカルデータブックでは、両用BIOS - 1MB I/Fモード時のみ有効となって いるが、640KB専用BIOS,両用BIOS - 640KB I/Fモード時にも有効。 o DAにFhを指定したときも640KBアクセスモード時の動作モードが変更 できるが、意味上、DAには7hを指定する方が良い。 関連 0000:05CAh[640KB専用BIOS,両用BIOS - 640KB I/Fモード時] 0000:0493h[両用BIOS - 1MB I/Fモード時] INT 1Bh - Function 0Eh(FD)